package com.zkh.myutils.io.excel;

import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import com.zkh.myutils.io.excel.opcpack.OPCPackage;
import com.zkh.myutils.io.excel.worksheet.Sheet;
import com.zkh.myutils.utils.CollectionUtils;

/**
 * 工作簿写对象
 * @author zkh
 */
public class WorkbookWriter {
	//工作表集合
	private List<Sheet> sheetList = new ArrayList<>();
	//打包对象
	private OPCPackage opcPackage = new OPCPackage();
	
	/**
	 * 创建工作表
	 * @param sheetName sheet表名称
	 */
	public Sheet createSheet(String sheetName) {
		//创建Sheet对象
		Sheet sheet = new Sheet(sheetName);
		//保存
		sheetList.add(sheet);
		//返回
		return sheet;
	}
	
	/**
	 * 获取工作表。必须要先调用createSheet()方法创建工作表后，才能获取
	 * @param index 工作表索引，按创建工作表的顺序
	 */
	public Sheet getSheet(int index) {
		return sheetList.get(index);
	}
	
	/**
	 * 获取工作表。必须要先调用createSheet()方法创建工作表后，才能获取
	 * @param sheetName 工作表名称。如果重名，将按创建顺序，取第一个
	 */
	public Sheet getSheet(String sheetName) {
		return CollectionUtils.find(sheetList, e->e.getName().equals(sheetName));
	}
	
	/**
	 * 将数据写入输出流
	 * @param outputStream 目标输出流
	 */
	public void write(OutputStream outputStream) throws IOException {
		//打包
		opcPackage.pack(sheetList, outputStream);
	}
}
